home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / dakit / main.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-10-10  |  5.2 KB  |  163 lines

  1. /*--main.h----------------------------------------------------------
  2.  * Main include file for ANIM2PCX.
  3.  * Note: all files editted with tab stops every 4 spaces.
  4.  */
  5.  
  6. /* ------------------------------------------------------------------------
  7.  * Typedefs for portability.
  8.  */
  9.  
  10. typedef char BOOL;                /* 0==FALSE, 1==TRUE */
  11. typedef char BYTE;                /* signed    8-bit number */
  12. typedef unsigned char UBYTE;    /* unsigned  8-bit number */
  13. typedef int WORD;                /* signed   16-bit number */
  14. typedef unsigned int UWORD;        /* unsigned 16-bit number */
  15. typedef long LONG;                /* signed   32-bit number */
  16. typedef unsigned long ULONG;    /* unsigned 32-bit number */
  17. typedef void (*ProcHandle)();
  18.  
  19. /* --- enable argument checking in Microsoft's include files */
  20. #define LINT_ARGS
  21.  
  22. /*-----------------------------------------------------------------*/
  23.  
  24. #ifndef NULL
  25. #define NULL    0
  26. #endif
  27.  
  28. #ifndef FALSE
  29. #define FALSE    0
  30. #define TRUE    1
  31. #endif
  32.  
  33. #define FAIL    1
  34. #define SUCCESS    0
  35.  
  36. #define MAX_INTEGER        32767
  37.  
  38. #define HIWORD(longValue)    ((UWORD)((longValue) >> 16))
  39. #define LOWORD(longValue)    ((UWORD)(longValue))
  40.  
  41. /* --- this depends on the memory model we're using */
  42. /* Within the 64 KB data segment. */
  43. #define NULL_DATAPTR 0
  44. /* #define NULL_PROCPTR ((BYTE far *) NULL) */
  45. #define NULL_PROCPTR ((ProcHandle) NULL)
  46.  
  47. /* --- separate Microsoft "far" ptrs into their segment & offset parts */
  48. #define FP_SEG(fp) (*((UWORD *)&(fp) + 1))
  49. #define FP_OFF(fp) (*((UWORD *)&(fp)))
  50.  
  51. /* --- combine segment & offset into a "far" ptr */
  52. #define BYTE_FAR_PTR(seg,off) ((BYTE far *)(((LONG)(seg)<<16)+(off)))
  53. #define WORD_FAR_PTR(seg,off) ((WORD far *)(((LONG)(seg)<<16)+(UWORD)(off)))
  54.  
  55. /*----------------------------------------------------------------------*/
  56.  
  57. #define SWAP(a,b)        { (a) ^= (b); (b) ^= (a); (a) ^= (b); }
  58. #define ORDER(a,b)        if ((a)>(b))   SWAP((a),(b))
  59. #define MAX(a,b)        ((a)>(b)?(a):(b))
  60. #define MIN(a,b)        ((a)<(b)?(a):(b))
  61. #define ABS(a)            ((a)>0?(a):-(a))
  62. #define DIV_ROUND(x, d)    (((x) + ((d) >> 1)) / (d))        /* ASSUME d > 0. */
  63. #define EVEN_UP(a)            ( ((a)+1) & ~1 )
  64.     /* Even number >= a. */
  65.  
  66. #define CHECK_DOS(fn)  if ((fn) == -1) goto doserr
  67.  
  68. /* ------------------------------------------------------------------------
  69.  * Graphics data structures.
  70.  */
  71.  
  72. typedef struct {
  73.     WORD x, y;
  74. } POINT;
  75. typedef struct {
  76.     WORD w, h;
  77. } Dims;
  78. typedef struct {
  79.     WORD x, y, w, h;
  80. } Box;
  81.  
  82. /*
  83.  * kludge for easy access to individual red/green/blue values within a LONG.
  84.  *    NOTE: this depends on 808x byte order being low-high.
  85.  */
  86. typedef struct {
  87.     UBYTE blue, green, red, unused1;
  88. } LONG_RGB;
  89.  
  90. /* --- Max # colors visible on screen. */
  91. #define MAX_COLORS 256
  92.  
  93. /* --- Max # planes that a bitmap can have. */
  94. #define MAX_PLANES 4
  95.  
  96. /* --- BITMAP structure */
  97. typedef struct {
  98.     WORD width;                /* Width in bytes of each row.  Must be even. */
  99.     Box box;                /* Pixel bounds of bitmap.  (x,y == 0.) */
  100.     WORD planes;            /* Number of planes. */
  101.     UWORD seg[MAX_PLANES];    /* SEG where each plane is allocated. */
  102. } BITMAP;
  103.  
  104. typedef struct {
  105.     BITMAP *bitmap;
  106.     WORD nPlanes;        /* used only in FMT_ONLY mode */
  107.     UBYTE xpcolor;
  108. } MaskBM;
  109.  
  110. typedef struct {
  111.     UWORD w, h;         /* raster width & height in pixels */
  112.     UBYTE nPlanes;      /* # source bitplanes */
  113. } BitMapHeader;
  114.  
  115. /* --------------------------------------------------------------------------
  116.  * Description of screen format "f" (320 x 200, 256-colors).
  117.  */
  118. #define ppb            1    /* pixels per byte */
  119. #define ppb_minus1    0    /* ppb - 1 */
  120. #define ppb_shift    0    /* 1 << ppb_shift == ppb */
  121. #define bpp            8    /* bits per pixel */
  122. #define bpp_minus1    7    /* bpp - 1 */
  123. #define bpp_shift    3    /* 1 << bpp_shift == bpp */
  124. #define curDepth    1    /* Single plane in byte-per-pixel format. */
  125. #define white_color    0xff    /* register # for default white. */
  126.  
  127. /* -----------------------------------------------------------------------
  128.  * Number of chars in an MS-DOS filename or directory (path) name.
  129.  */
  130. #define FILENAME_ROOT_LENGTH    8
  131. #define FILENAME_SUFFIX_LENGTH    3
  132. #define SEQUENCE_ROOT_LENGTH  4    /* XXXX in XXXX0001.PCX, XXXX0002.PCX...*/
  133. #define SEQUENCE_DIGITS_LENGTH  (FILENAME_ROOT_LENGTH - SEQUENCE_ROOT_LENGTH)
  134. #define FILENAME_LENGTH 12        /* ROOT + '.' + SUFFIX */
  135. #define PATHNAME_LENGTH 66        /* drive + path (no filename) */
  136.  
  137. /* -----------------------------------------------------------------------
  138.  * Screen Format "f".
  139.  */
  140. #define N_COLUMNS    320
  141. #define N_LINES        200
  142. #define N_BYTES_IN_BITMAP (N_COLUMNS * N_LINES)
  143.  
  144. /* -----------------------------------------------------------------------
  145.  * Buffered i/o.
  146.  */
  147. void OpenIOBuffer(BOOL forWriting);
  148. void CloseIOBuffer(WORD file);
  149. WORD GFlush(WORD file);
  150. LONG GSeek(WORD file, LONG count, WORD seekType);
  151. WORD GRead(WORD file, UBYTE *buffer, UWORD nBytes);
  152. WORD GWrite(WORD file, UBYTE *buffer, UWORD nBytes);
  153.  
  154. /* -----------------------------------------------------------------------
  155.  * Procedures that need to be declared so parameters or return values of
  156.  * correct type.
  157.  */
  158. WORD far *BMLineStart(BITMAP*, WORD, WORD);
  159.  
  160. /* --- mnemonic names for Microsoft library functions */
  161. #define movmem(source,dest,length) memmove(dest,source,length)
  162. #define setmem(ptr,length,value) memset(ptr,value,length)
  163.